//
//  ZegoInRoomMessageViewDelegate.swift
//  ZegoUIKit
//
//  Created by Kael Ding on 2024/3/20.
//

import Foundation
/// 房间消息视图交互协议
/// 用于处理聊天消息的点击事件和自定义消息单元格显示
@objc public protocol ZegoInRoomMessageViewDelegate: AnyObject {
    /// 当用户点击某条聊天消息时触发
    /// - Parameter message: 被点击的消息对象
    /// - Note: 适用于需要实现消息点击交互的场景（如显示消息详情）
    @objc optional func onInRoomMessageClick(_ message: ZegoInRoomMessage)
    /// 自定义消息单元格视图（需配合registerCell使用）
    /// - Parameters:
    ///   - tableView: 当前消息列表的UITableView实例
    ///   - indexPath: 消息所在的位置索引
    ///   - message: 需要显示的消息对象
    /// - Returns: 完全自定义的UITableViewCell实例（返回nil时使用默认样式）
    /// - Important: 必须保证cell的重用标识符与registerCell注册的保持一致
    /// - Tip: 可通过message.extendedData获取自定义扩展数据
    @objc optional func getInRoomMessageItemView(_ tableView: UITableView, indexPath: IndexPath, message: ZegoInRoomMessage) -> UITableViewCell?
}
